package is1;

import java.io.File;
import java.io.FileWriter;
import java.text.DecimalFormat;
import java.util.ArrayList;

public class SalidaXML extends Salida 
{	
	private static String destino; 
	
	private SalidaXML() 
	{
	}
	
	public static void setInstance(String destino)
	{
		uniqueInstance = new SalidaXML();
		SalidaXML.destino = destino;
	}
	
	@Override
	public void escribirSalida(Venta v) 
	{
		// Si la venta está cancelada, no se escribe nada
		if (v == null)
		{
			File file;
			FileWriter writer;
		
			try
			{
				file = new File(destino);
				writer = new FileWriter(file);
				writer.close();
			}
			catch(Exception e)
			{
				System.out.println("Ha habido un problema al escribir el fichero de salida");
			}
			
			return;
		}
		
		// Si no está cancelada...
		try
		{
			DecimalFormat formato = new DecimalFormat("#.##");
			ArrayList<LinVenta> lineas = v.getLineas();
			File file;
			FileWriter writer;
			int numLineas = lineas.size();
			
			file = new File(destino);
			writer = new FileWriter(file);
			
			writer.write("<!DOCTYPE ticket PUBLIC \"-//www.cristinacachero.com//DTD ticket IS1//ES\" \"http://artemisa.dlsi.ua.es/~ccachero/isi/ticket.dtd\">\n");
			writer.write("<ticket>\n");
			
			for (int i = 0; i < numLineas; i++)
			{
				LinVenta l = lineas.get(i);
				
				writer.write("\t<linTicket>\n");
				writer.write("\t\t<descr>"+ l.getProducto().getDescripcion() + "</descr>\n");
				writer.write("\t\t<cant>"+ l.cantidad + "</cant>\n");
				writer.write("\t\t<pUnit>"+ (formato.format(l.getPrecioUnitario())).replace(',', '.') + "</pUnit>\n");
				writer.write("\t\t<dctoLin>"+ (formato.format(l.getDescuento())).replace(',', '.') + "</dctoLin>\n");
				writer.write("\t\t<pLin>"+ formato.format(l.getPrecioTotal()).replace(',', '.') + "</pLin>\n");
				writer.write("\t</linTicket>\n");
			}
		
			if (numLineas > 0)
			{
				writer.write("\t<totalAPagar cant=\"" + formato.format(v.getTotal()).replace(',', '.') + "\"/>\n");
				writer.write("\t<dctoAcumulado cant=\"" + formato.format(v.getDescuento()).replace(',', '.') + "\"/>\n");
				writer.write("\t<impuestos cant=\"" + formato.format(v.getImpuestos()).replace(',', '.') + "\"/>\n");
			}
		
			writer.write("</ticket>\n");
			writer.close();
		}
		catch (Exception e)
		{
			System.out.println("Ha habido un problema al escribir el fichero de salida");
		}
	}
}
